from flask import Blueprint,request,jsonify,make_response
from  flask import  current_app as app
import json
import os
import uuid
from utils.mylist import myfile

#导入文件
from flask import Blueprint
from xlrd import open_workbook

#后天导出文件
from io import BytesIO
from xlrd import open_workbook
from urllib.parse import quote
import xlsxwriter
import datetime
import mimetypes


#蓝图
bp_comany = Blueprint('comany',__name__)




#测试错误日志
@bp_comany.route("/test/")
async def test():
    strs = "请求ip:"+request.remote_addr+'请求地址是:'+request.url+'报错信息'+'\n'
    app.logger.error(strs)
    return 'ok'


#后台接收导入
@bp_comany.route('/daoru/',methods=['POST'])
def daoru():
    # #获取文件
    file = request.files['file']
    # # # #调用方法改名
    filename = myfile.rname(file.filename)
    # #保存文件
    file.save(os.path.join("./static/upload/file/" +filename))
    # #把数据导入
    name = './static/upload/file/' + filename
    bk = open_workbook(name,encoding_override='utf-8')
    sh = bk.sheets()[0]
    nrows = sh.nrows
    ncols = sh.ncols
    for i in range(1,nrows):
        row_date = sh.row_values(i)
        print(row_date[0])
        for j  in range(0,ncols):
            print(row_date[j])

    return jsonify({'code':200})


#后台导出
@bp_comany.route('/daochu/')
def daochu():
    # 实例化二进制数据
    out = BytesIO()
    # 创建一个Excel实例
    workbook = xlsxwriter.Workbook(out)
    # 添加一个sheet，add_worksheet()，默认"Sheet1"，可自定义命名，add_worksheet("资产列表")
    table = workbook.add_worksheet()
    # table.write(行, 列, 字段名)
    # 行、列从 0 开始计数
    # 字段命名根据每个人使用情况而定，插入数据部分也是
    table.write(0, 0, "资产编号")
    table.write(0, 1, "资产名称")
    workbook.close()
    filename = quote("资产列表_{}.xlsx".format(datetime.datetime.now().strftime("%Y%m%d%H%M%S")))
    file = make_response(out.getvalue())
    out.close()
    mime_type = mimetypes.guess_type('%s.xlsx' % filename)[0]
    file.headers['Content-Type'] = mime_type
    file.headers["Cache-Control"] = "no-cache"
    file.headers['Content-Disposition'] = "attachment; filename*=utf-8''{}".format(filename)
    return file











